iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 5
2
Software Development

Android animation 30天上手系列 第 5

Day05 動畫練習:Facebook like button

  • 分享至 

  • xImage
  •  

到目前為止,我們已經知道了怎麼使用View animation。來個小小的動畫練習吧。

這是Facebook 的讚按鈕,我們就用到目前所學的來實作這個動畫

FacebookLikeButton

複習一下,View Animation 可以用來做旋轉、縮放、移動、透明度的動畫。
我們先來分析一下這個動畫的組成,看起來只需要2張圖「還沒點讚」、「已點讚」。
點了讚會變藍色的、讚的圖示會變大、另外大姆指有往上翹高一下。

分析後得到點擊按鈕後的動畫步驟

  1. 換成藍色按讚後的按鈕
  2. 新增圖片放大1.2倍的動畫
  3. 新增圖片旋轉-20度 (這是為了讓讚的大姆指翹高)
  4. 開始動畫

再點擊一次,則變回原本較小的讚

實作如下:

like.setOnClickListener {
    //步驟1:變換照片
    if (isLike) {
        //將讚取消
        like.setImageResource(R.mipmap.fblike_notselect)
    } else {
        //按讚
        like.setImageResource(R.mipmap.fblike_select)
    }

    //新增一個動畫集合
    val animSet = AnimationSet(true)

    //步驟2:放大1.2倍的動畫
    val animation = ScaleAnimation(
            1.0f, // x起始縮放比例
            1.2f, // x結束縮放比例
            1.0f, // x起始縮放比例
            1.2f, // y結束縮放比例
            Animation.RELATIVE_TO_SELF, 1f,
            Animation.RELATIVE_TO_SELF, 1f)
    animation.duration = 200

    //步驟3:旋轉-20動畫的動畫
    val rotateAnimation = RotateAnimation(
            0.0f, //起始角度
            -20f, //結束角度
            RotateAnimation.RELATIVE_TO_SELF, //pivotXType
            0.5f, //設定x旋轉中心點
            RotateAnimation.RELATIVE_TO_SELF,
            0.5f) //設定y旋轉中心點

    //動畫持續時間
    rotateAnimation.duration = 200

    //將放大及旋轉的動畫放入動畫集合
    animSet.addAnimation(animation)
    animSet.addAnimation(rotateAnimation)

    //步驟4:開始動畫
    this.like.startAnimation(animSet)
    isLike = !isLike
}

這樣就完成按讚的動畫了,是不是很簡單?
下一篇將介紹另一種動畫API:Property Animation。

完整程式:
https://github.com/evanchen76/FacebookLikeButton


上一篇
Day04 View Animation 進階(2)
下一篇
Day06 Property Animation
系列文
Android animation 30天上手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言